
#include <unordered_map>
class Solution {
public:
    /**
     * 
     * @param numbers int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& numbers, int target) {
        // write code here
        vector<int> res;
        //创建哈希表，两元组分别表示值、下标
        unordered_map<int, int> hash;
        //在哈希表中寻找target - numbers[i]
        for(int i = 0; i < numbers.size(); i++){
            int temp = target - numbers[i];
            //若是没找到，将此信息计入哈希表中
            if(hash.find(temp) == hash.end()){
                hash[numbers[i]] = i;
            }else{
                //哈希表中记录的是之前的数字，所以都要+1
                res.push_back(hash[temp] + 1);
                res.push_back(i + 1);
            }
        }
        return res;
    }
};